Procedural (Imperative) Languages: Structure
wSource = Implementation
w
wInput.cc
wOutput.cc
wArray.cc
wEtc..
Declarations = Interface
Input.hh
Output.hh
Array.hh
The Input.c module might include routines such as InputInteger, InputDouble, InputString, etc.
Each data type nominally has a separate but similar function declaration.
Suppose you desired to add a new data type to your library, for example complex: You would need to modify every file in your collection in order to define new functions such as InputComplex, OutputComplex, NewComplexArray, etc.